c++ inet

您所在的位置:网站首页 gets_s was not declared in this scope c++ inet

c++ inet

2023-08-31 17:47| 来源: 网络整理| 查看: 265

c++ inet_pton和inet_ntop在windows下用不了咋办?

这两个函数是ip地址和字符串的互转函数,查询百度在“在百度百科”中提示:只要 包含 #include 头文件即可。然而在codeblocks亲测却是不行的,提示:D:\C++_work\test\test.cpp|16|error: ‘inet_ntop’ was not declared in this scope| 意思就是这个函数在没有定义。 vs我没有安装,不确定vs下是否有。那么咋办呢?查询发现win下可用以下两个函数代替: WSAAddressToStringA 和WSAStringToAddress。这两个函数用法类似,我们以WSAAddressToStringA函数说明,其函数语法如下:

INT WSAAPI WSAAddressToStringA( LPSOCKADDR lpsaAddress, // sockaddr类型指针 DWORD dwAddressLength, //地址长度 LPWSAPROTOCOL_INFOA lpProtocolInfo, //地址协议指针 LPSTR lpszAddressString, //转换后字符串地址 LPDWORD lpdwAddressStringLength //函数返回的字符串长度 );

如果没有错误发生,则 WSAAddressToString返回零值。否则,将返回值SOCKET_ERROR,并且可以通过调用WSAGetLastError来检索特定的错误号 。

以下为代码实例,在win7下直接运行,注意查看端口号为0和不为0时字符串的不同

/* ipv6 address to string or string to ipv6 address; Edited by Mr Zhu,email:[email protected] or weixin:40222865 */ #include #include #include #include using namespace std; int main() { WSADATA wsa_data; WORD sockversion = MAKEWORD(2,2); if(WSAStartup(sockversion, &wsa_data) != 0) { return 0; } struct sockaddr_in6 ser_addr; int addr_size=sizeof(struct sockaddr_in6); char ip_addr[100]=""; DWORD string_leng=100; int i; WSAStringToAddress( (LPSTR)"ff::1:ff:1", AF_INET6, NULL, (LPSOCKADDR) &ser_addr, &addr_size ); printf("16进制ip地址是:"); for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3